]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
util: Don't double-fork when spawning from Alt-F2
authorColin Walters <walters@verbum.org>
Thu, 10 May 2012 01:23:19 +0000 (21:23 -0400)
committerColin Walters <walters@verbum.org>
Thu, 10 May 2012 19:05:05 +0000 (15:05 -0400)
This breaks polkit.

See http://bugzilla.redhat.com//show_bug.cgi?id=819275

https://bugzilla.gnome.org/show_bug.cgi?id=675789

js/misc/util.js

index 8673f83294c8b8b0dabbc2703b2806106bdc67a1..8839ed6f804dcca4462a9d8317a806bce0f6da58 100644 (file)
@@ -83,10 +83,11 @@ function spawnCommandLine(command_line) {
 // this will throw an error.
 function trySpawn(argv)
 {
+    var success, pid;
     try {
-        GLib.spawn_async(null, argv, null,
-                         GLib.SpawnFlags.SEARCH_PATH,
-                         null, null);
+        [success, pid] = GLib.spawn_async(null, argv, null,
+                                          GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
+                                          null, null);
     } catch (err) {
         if (err.code == GLib.SpawnError.G_SPAWN_ERROR_NOENT) {
             err.message = _("Command not found");
@@ -101,6 +102,10 @@ function trySpawn(argv)
 
         throw err;
     }
+    // Dummy child watch; we don't want to double-fork internally
+    // because then we lose the parent-child relationship, which
+    // can break polkit.  See https://bugzilla.redhat.com//show_bug.cgi?id=819275
+    GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function () {}, null);
 }
 
 // trySpawnCommandLine: